一、配景
DNS协议提供了域名与IP地址转换的服务,是必不可少的网络通讯协议之一,也是整个互联网运行的基础。然而,古板的流量检测装备很少对DNS协议传输数据的有用性、清静性举行深度剖析和检查。思科在其清静研究报告中形象地称之为“DNS盲点”。恶意软件正是使用此机会,通过DNS协议构建隐藏隧道,进而实现下令控制C&C、数据外发等攻击。EfficientIP宣布的《全球DNS威胁报告2018》指出,2018年77%的组织至少履历过一次基于DNS的网络攻击,并且DNS隧道占有了绝大比例。DNS隐秘隧道手艺是MITRE ATT&CK下令与控制矩阵(Command and Control)中的子手艺,其ID为T1071.004。ATT&CK中纪录有30多个现在已知的APT工具使用DNS隧道实验C&C攻击,好比:OilRig组织使用的Helminth和ISMAgent、OceanLotus使用的Denis等。
目今,针对DNS隧道的检测要领许多,如基于阈值、统计或专家规则的要领以及基于机械学习的要领等。实践证实,相比其他类要领,基于机械学习的DNS隧道检测要领在检测效果、防绕过、泛化能力等方面具有较大的优势。
本文将从DNS隧道基础知识、DNS隧道检测要领现状及DNS隧道检测实践三个方面先容相关内容。
二、DNS隧道基础知识
2.1 DNS隧道简介
DNS隧道是一种隐藏隧道,即通过将数据或下令封装到DNS协议举行数据、下令等传输的隧道,DNS隧道提供了宿主机与其C&C服务器之间低速但隐藏的双向通讯通道。
DNS隧道从用途上可以分为准时隐藏隧道和存储隐藏隧道两种。前者使用准时属性将相同结构的DNS请求发送到C&C,这类新闻通常为心跳;此后者则使用DNS协议封装编码的信息,这类信息通常为传输的敏感数据。与准时隐藏隧道相比,存储隐藏隧道可以提供更高的带宽,因此存储隐藏隧道使用更为普遍。无论哪种隧道类型都使用DNS请求的子域将数据传输到C&C,并使用这些请求的响应从C&C吸收数据。因此,DNS隧道中传输的数据必需遵守DNS协议规范,请求的域名必需具有label,并且必需以字母或数字开头和最后,每个label的长度不凌驾63个字符,整个域名的长度不凌驾255个字符。
2.2 DNS隧道原理
DNS隧道在通讯方法上又分为直连和中继两种模式。直连是宿主机直接与指定的目的DNS Server(Authoritative NS Server)毗连,通过将编码数据封装在DNS协议中举行通讯。这种方法速率快,可是隐藏性较量差,很容易被探测到,另外限制较量多,许多场景不允许自己指定DNS Server。而通过DNS迭代盘问实现的中继隧道则更为隐藏,但同时由于数据包抵达目的DNS Server前需要经由多个节点,以是速率上比直连慢。
中继DNS隧道事情原理如图1[1]所示,详细如下:
Step1: 攻击者首先注册一个域名,如ex.fil,域名指向攻击者控制的服务器,并在该服务器上装置恶意隧道服务器端程序。
Step2: 攻击者使用恶意软件熏染公司内网中的主机,之后受熏染主机向DNS剖析服务器发送请求,DNS剖析服务器将请求中继到根域名服务器和顶级域服务器。
Step3: 各级DNS剖析服务器最终将请求路由到被攻击者控制的装置了隧道程序的C&C服务器。
最终宿主机和C&C之间通过DNS剖析服务器建设了毗连,并使用该隧道泄露数据或实现其他恶意目的。由于宿主机和C&C之间没有直接毗连,因此追踪攻击者越发难题。

图 1 DNS隧道原理
2.3 DNS隧道工具
现在有许多开源DNS隧道工具,好比:iodine、DNSCat2、dns2tcp等等,我们称之为通用DNS隧道工具。这些工具开源并且支持二次开发,例如基于Iodine开发的Android DNS隧道工具MagicTunnel,它们支持多种平台、语言以及纪录类型。
许多APT组织使用的恶意软件也具有DNS隧道功效,我们称之为APT工具。相关于通用DNS隧道工具,许多APT工具支持特定的硬编码下令,其数据封装更精巧,支持的纪录类型更普遍,检测也越发难题,好比许多APT工具支持A和AAAA纪录类型。


表 2 具有DNS隧道功效的APT工具
2.4 典范DNS隧道样例
DNS隧道的使用很是普遍,除了一些通用的开源DNS隧道工具之外,许多APT工具也使用了DNS隧道手艺。接下来将对部分通用DNS隧道工具和APT工具举行举例说明。
2.4.1 Iodine
Iodine是基于C语言实现的开源DNS隧道工具。Iodine在默认情形下使用NULL纪录类型,同时可以支持PRIVATE、TXT、SRV、MX、CNAME和A(返回CNAME)类型。Iodine在外发数据时首先会使用GZIP对数据举行压缩然后再编码发送,其支持Base32、Base64和Base128编码。
2.4.2 Dns2tcp
Dns2tcp也是基于C语言实现的开源DNS隧道工具,并且已预装在Kali Linux和BlackArch Linux系统。在默认情形下,Dns2tcp使用TXT纪录类型,但它也可以支持KEY纪录类型。在通讯时双向数据都使用Base64编码举行传输。
2.4.3 Dnscat2
Dnscat2是基于JAVA实现的开源DNS隧道工具。Dnscat2可以使用TXT、CNAME和MX纪录类型,可是若是仅将数据从客户端发送到服务端时它还支持A和AAAA纪录类型。在通讯时双向数据均使用十六进制编码举行传输。
2.4.4 ISMAgent
ISMAgent是OilRig组织所使用的具有DNS隧道功效的恶意软件。通过Wireshark抓包展示ISMAgent发送初始信标并将数据发送到C&C服务器的历程。首先木马使用DNS请求向C&C发送包括会话ID的初始信标,C&C使用特定的IPv6地址作为响应指示隧道建设毗连,然后木马继续发送包括数据编号、随机数和编码数据的DNS请求,C&C使用特定IPv6响应这些请求以指示木马继续发送数据直到所有数据都发送到C&C服务器,C&C使用包括请求数的IPv6响应以指示数据传输完毕。
2.4.5 Helminth
Helminth是OilRig组织在攻击运动中开发的具有DNS隧道功效的恶意软件。Helminth有两种版本,一种是可执行可移植的版本,另一种是Power Shell版本,这两种版本都通过DNS隧道与C&C举行通讯。两个版本的DNS隧道运行方法相同,仅对天生的子域举行更改,使它们看起来差别以逃避检测。
Helminth PowerShell吸收C&C指令的历程如下:首先,Helminth木马发出DNS请求启动与C&C服务器的会话,C&C用IPv4地址响应此信标,木马从该IPv4中获得唯一的系统标识符;然后Helminth发送带有系统标识的DNS请求,C&C用一个IPv4地址来响应该请求,Helminth将IPv4转换为字符作为下载剧本的文件名;最后,Helminth继续发出其他的DNS请求,并将响应中的IPv4视为下令写入剧本文件,C&C以特定IPv4响应以指示下令传输完毕。
Helminth PowerShell外发数据的历程如下:当收到指示IPv4后,Helminth执行剧本同时将执行效果写入到与剧本同名的文本文件中,最后该文件通过DNS请求发送到C&C,C&C以牢靠的IPv4响应。
2.4.6 Denis
Denis是Ocean Lotus组织最常用的特种木马,是一个全功效的后门,攻击者使用DNS隧道实现了一种越发隐秘的C&C通讯要领。为了确保DNS流量不被过滤,攻击者将后门设置为与Google和OpenDNS 的DNS服务器通讯,由于大大都组织和清静产品都不会过滤发送到到这两个主要DNS服务器的流量。
Denis首先向Google DNS服务器发送包括会话ID的初始信标,并由各级域名服务器路由到攻击者控制的C&C服务器以建设毗连,然后C&C以数据字节数和硬编码指令响应该请求,Denis吸收到响应后执行特定的下令并将下令执行效果通过Google DNS服务器发送到C&C。Denis总共支持16条硬编码指令,大大都指令涉及与被攻击盘算机文件系统的交互,另外还具有获取有关翻开窗口的信息、挪用恣意API和获取有关系统简要信息的功效。
三、DNS隧道检测现状
现在业界提出了种种DNS隧道检测要领,总体来说可以分为两类:一类为基于规则的检测要领,一类为基于机械学习的检测要领。
基于规则的要领是通过阈值来识别DNS隧道,好比监控终端请求域名的长度,若是域名长度凌驾设定阈值,则会发出警报。别的,寻找不常用的DNS纪录类型(例如TXT、NULL纪录)是另一种常用的检测要领[3]�;阢兄档募觳庖觳环笪扌啊⒎夯芰Σ�,并可以通过修改域名长度、请求频率等特征容易绕过检测。
基于机械学习的要领通过学习历史数据特征,可以准确地识别未知的DNS隐藏隧道,同时兼具误报率低、不易被绕过等优点�;诨笛暗腄NS隧道检测要领可以总结为两类:一类为负载剖析,这类要领是受DGA检测研究的启示[4],主要关注DNS负载的随机性、字符频率等特征;另一类为基于时间窗口的流量剖析,这类要领关注DNS请求或响应随着时间转变的统计特征,包括时间窗内每个域名的主机名数目、种种纪录类型(A、AAAA、TXT等)的频率、子域N-Gram均值和方差、请求和响应时间距离的均值和方差等等。
文献[5]凭证齐夫定律提出了NgViz要领,该要领使用多条正常DNS流量统计其负载的字符频率以及字符排名,在推理阶段盘算输入的多条DNS请求与正常DNS流量的字符排名和字符频率的加权匹配度,通过既定的阈值来判别DNS隧道,但该要领检测效果不佳。文献[6]使用DNS请求和响应负载的字符熵和长度以及DNS数据包包长等特征构建随机森林模子,该实验批注使用DNS请求和响应特征比单独使用请求或响应的特征检测准确率更高,可是该要领关于未知隧道工具召回率较低,且只能检测使用TXT、NULL等纪录类型的隧道工具,无法检测使用A、AAAA纪录类型的新型隧道工具。文献[7]使用DNS请求的七个特征,包括FQDN中的字符总数、子域中字符数、大写字母和数字字符的数目、字符熵以及DNS请求域名的最大标签长度清静均标签长度特征构建伶仃森林模子以检测DNS隧道。这种要领不涉及任何特定的DNS纪录类型,但由于使用无监视的模子,该要领召回率较低。文献[8]使用DNS请求和响应的统计特征,例如:DNS请求和响应负载的平均长度、编码的有用载荷和唯一请求的数目等,该计划也使用伶仃森林算法,可是该要领仅思量A和AAAA两种纪录类型,并且在实验中也仅思量了Iodine和dns2tcp两个开源隧道工具。文献[9]指出,DNS隧道用于在宿主机和C&C交流数据时,通常将编码数据封装到DNS请求和响应的负载部分。作者提出了两种基于机械学习的要领:(i)逻辑回归模子和(ii) k-means聚类,这两种要领都是从编码的有用载荷中提取语法特征,例如:字符熵和字符(大写、小写、数字、破折号)数目,可是该计划也仅仅针对使用TXT纪录的隧道工具dnscat2。文献[10]剖析了几个开源DNS隧道工具的流量,提取了四种类型的特征:请求和响应时间距离的均值和方差、请求数据包巨细、域名熵和纪录类型(例如A、TXT、MX等)比例等特征。作者使用了多个DNS隧道工具天生的数据训练分类模子,但测试数据仍然是由加入训练的隧道工具爆发。
四、DNS隧道检测实践
现有的基于机械学习的DNS隧道检测计划使用多种DNS隧道工具天生的数据训练模子,以使模子可以识别更多的隧道工具,可是这种计划对未加入训练的隧道工具和未知隧道工具的检测效果不佳,也即模子泛化性能差;另外,在缺少多种隧道工具数据的现状下,一些计划为了提高模子的泛化能力使用统计剖析的要领,但这种计划无法实现实时检测�;诙陨鲜隽礁鑫侍獾乃剂�,本文提出了仅使用DNS请求特征的DNS隧道实时检测计划,
计划分为四个�?椋旱谝桓瞿?槲荽χ贸头D?�,该�?橹饕瞧饰鯠NS流量数据并提取相关字段内容;第二个�?槲卣魈崛∧?�,该�?榛谑荽χ贸头D?榈男Чㄉ璨⑻崛NS隧道检测相关的特征;第三个�?槲W友盗纺?�,该�?槭褂锰崛〉南喙靥卣餮盗坊笛澳W�,对模子举行调优并长期化;第四个�?槲W油评砟?�,该�?榧釉匾丫盗泛玫哪W硬⒍晕粗狣NS流量举行推理展望。
4.1 特征建设
DNS隧道通过DNS请求的负载携带编码或加密数据,其许多特征的漫衍均与正常DNS请求有差别,接下来将通过部分特征来剖析DNS隧道。
4.1.1 子域长度
正常域名每个label的长度不凌驾63个字符,整个域名的长度不凌驾255个字符,正常域名长度往往远缺乏255个字符,但DNS隧道为了增添带宽,其负载往往会携带更多的信息。其次由于DNS隧道通�;岫允菥傩斜嗦�,因此其长度比正常域名更长。
4.1.2 最大label长度
与子域长度特征一样,由于DNS隧道负载携带更多的数据,因此与正常域名相比其每个label都较长。
4.1.3 字符比例
大写小写字母、数字、特殊字符等在域名中所占的比例也是区分正�;蛩淼赖闹饕卣�。由于DNS隧道在传输数据之前往往使用base32、base64、自界说加密算法等对数据举行编码或加密,因此负载中大写字母和数字的比例较高,但正常域名不区分巨细写,其险些不含有大写字母,且域名中数字所占比例也较低。
4.1.4 一连字符比例
由于DNS隧道负载为编码数据,因此其一连数字、一连子音的比例与正常域名有较大的差别。
4.1.5 熵
编码的DNS隧道会使用更普遍的字符,其字符漫衍的熵值更高。然而正常域名有较高的可读性,其字符漫衍与正常英文语料一致,熵值相对较低。因此n-gram熵被视为可以指示DNS隧道运动的主要因素之一。
4.1.6 字符转移概率
基于正常域名可读性的特征,可以使用正常DNS流量或者英文语料统计N-Gram的转移概率。关于DNS隧道负载,其编码后的数据更随机,N-Gram转移概率与正常语料差别较大。因此N-Gram转移概率也是区分正常DNS和隧道的主要特征。
4.2 模子
通太过析各隧道工具天生样本的特征向量,各隧道工具天生的黑样本在各特征上均与白样本保存显著差别,但差别隧道工具样本之间也保存显著差别。因此需要对所使用的特征举行一系列优化,不然模子仅能检测出加入模子训练的隧道工具天生的数据,也就是说模子泛化能力差,不可发明未知隧道工具的数据。为了验证本文所述要领,训练集仅使用一种隧道工具爆发的数据,通过检测未加入训练的隧道工具数据来测试模子的泛化能力。经由调理参数后模子抵达最好的检测效果,模子在验证集AP 为 100%。
4.3 模子评估
现在的计划对检测加入训练的隧道工具都具有较高的准确率和召回率,可是关于未加入训练的工具或者未知工具的隧道数据检测效果较差。为了验证本文所述计划关于加入训练和未知工具隧道数据的检测效果,对多个通用开源DNS隧道工具和APT工具举行单独测试,最终检测效果显示本计划所述模子可以检测绝大大都的通用开源DNS隧道工具和APT隧道工具,而未检出的样本均为准时隐藏隧道数据。详细检测效果如下:
五、 总结
基于机械学习的DNS隧道检测优于古板基于阈值、统计或专家规则的要领。本文提出的基于机械学习的DNS隧道检测计划优于同类计划,仅通过DNS请求的负载部分举行DNS隧道检测,同时对使用的特征举行了多项优化,可以支持多种工具和多种纪录类型。虽然,所提出的计划关于检测准时隐藏隧道尚有局限性,后续将进一步完善计划以顺应更多场景。
参考文献
[1] Nadler A , Aminov A , Shabtai A . Detection of malicious and low throughput data exfiltration over the DNS protocol[J]. Computers & Security, 2019.
[2] Robert Falcone. DNS Tunneling in the Wild: Overview of OilRig’s DNS Tunneling[Online].https://unit42.paloaltonetworks.com/dns-tunneling-in-the-wild-overview-of-oilrigs-dns-tunneling/,2020.
[3] S. Jaworski. Using splunk to detect dns tunneling[J]. SANS Institute InfoSec Reading Room, 2016.
[4] L. Bilge, E. Kirda, C. Kruegel, and M. Balduzzi. Exposure: Finding malicious domains using passive dns analysis[J]. NDSS,2011.
[5] K.Born, D.Gustafson.NgViz:detecting DNS tunnels through N-gram visualization and quantitative analysis[A]. Proceedings of the Sixth Annual Workshop on Cyber Security and Information Intelligence Research[C]. Oak Ridge, Tennessee, 2010. 1-4.
[6] A. Berg and D. Forsberg, "Identifying DNS-tunneled traffic with predictive models", Jun. 2019, [online] Available: http://arxiv.org/abs/1906.11246.
[7] M. Lyu, H. Habibi Gharakheili, C. Russell. “Mapping an Enterprise Network by Analyzing DNS Traffic,” in Proc. Passive and Active Measurement (PAM), Puerto Varas, Chile, Mar 2019.
[8] A. Nadler, A. Aminov, and A. Shabtai. Detection of malicious and low throughput data exfiltration over the dns protocol. Computers & Security, 80:36–53, 2019.
[9] A. Das, M.-Y. Shen, M. Shashanka, and J. Wang. Detection of exfiltration and tunneling over dns. In Machine Learning and Applications (ICMLA), 2017 16th IEEE International Conference on, pages 737–742. IEEE, 2017.
[10] J. Liu, S. Li, Y. Zhang, J. Xiao, P. Chang, and C. Peng. Detecting dns tunnel through binary-classification based on behavior features. In Trustcom/BigDataSE/ICESS, 2017 IEEE,pages 339–346. IEEE, 2017.
版权声明
转载请务必注明来由
版权所有,违者必究
- 要害词标签:
- 人工智能清静 AI清静应用 DNS隧道检测

京公网安备 11010802026257号